# -*- coding: utf-8 -*-
"""
@date: 2021/6/15 19:42
@file: word2vec_csv.py
@author: lilong
@desc: word2vec的格式转化为csv，以快速加载
"""

import numpy as np
import pandas as pd


class Config:
    model_path = "../../data/dgcnn/word2vec_baike"


# 用于过滤在word2vec中的词
def get_vocabulary_vector():
    # 载入已下载的word2vec解压后的模型
    print("start word2vec load ......")
    from gensim.models import KeyedVectors
    wv_from_text = KeyedVectors.load_word2vec_format(Config().model_path + '/word2vec_baike',
                                                     binary=False,
                                                     unicode_errors='ignore')  # C text format
    print("word2vec load succeed")

    # # 所有文本构建词汇表，words_cut 为分词后的list，每个元素为以空格分隔的str.
    # vocabulary = list(set([word for item in words_cut for word in item.split()]))
    #
    # # 构建词汇-向量字典
    # vocabulary_vector = {}
    # for word in vocabulary:
    #     if word in wv_from_text:
    #         vocabulary_vector[word] = wv_from_text[word]
    # # 储存词汇-向量字典，由于json文件不能很好的保存numpy词向量，故使用csv保存
    # pd.DataFrame(vocabulary_vector).to_csv(Config().model_path + "vocabulary_vector.csv")


if __name__ == "__main__":

    get_vocabulary_vector()
    assert False

    # 读取词汇-向量字典，csv转字典
    vocabulary_vector = dict(pd.read_csv(Config().model_path + "vocabulary_vector.csv"))
    # 此时需要将字典中的词向量np.array型数据还原为原始类型，方便以后使用
    for key, value in vocabulary_vector.items():
        vocabulary_vector[key] = np.array(value)
    print("vocabulary vector load succeed")

    # 至此可以使用字典方式快速读取词向量，第一次构建耗时，之后只需读取该csv，速度提升很多啦..
